package com.sikaryofficial.workbench.domain.dto.resp.order;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.sikaryofficial.common.core.annotation.CustomerDateDeserializer;
import com.sikaryofficial.common.core.annotation.LocalDateTimeFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import org.hibernate.validator.constraints.Length;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @author : wuweihong
 * @desc : 订单出参
 * @date : 2024-09-24
 */
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "订单DTO出参对象", description = "订单DTO出参对象")
public class OrderDTO implements Serializable {

    private Long orderHeaderId;
    /**
     * 订单编号（有无啥规则）
     */
    private String orderHeaderNo;
    /**
     * 品牌名称
     */
    private String brandNo;
    /**
     * 商品名称
     */
    private String goodsNames;
    /**
     * 口味数量
     */
    private Integer flavorQuantity;
    /**
     * 订单头状态，0-draft,1-Confirmation,2-电子签章;其他状态待扩展
     */
    private Integer headerStatus;
    /**
     * 订单头状态描述语
     */
    private String headerStatusDesc;
    /**
     * 总数量(烟杆)
     */
    @Length(min = 1, max = 100, message = "totalQuantity could not less than 1 and greater than 100")
    private Long totalQuantity;
    /**
     * 总价
     */
    private BigDecimal amount;
    /**
     * 币种
     */
    private String currency;
    /**
     * 折扣,仅在购物车中展示
     */
    private BigDecimal discount;
    /**
     * 其他信息
     */
    private String message;

    /**
     * 子订单列表
     */
    private List<OrderItemDTO> orderItemList;

    /**
     * 创建人
     */
    @ApiModelProperty(value = "创建人ID")
    private Long createdBy;

    /**
     * 创建人名字
     */
    @ApiModelProperty(value = "创建人名字")
    private String createUser;

    /**
     * 创建时间
     */
    @LocalDateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonDeserialize(using = CustomerDateDeserializer.class)
    @ApiModelProperty(value = "创建时间")
    private Date createdTime;

    /**
     * 订单进度百分比
     */
    private Integer percentage;

    /**
     * 更新人
     */
    private Long updateBy;
    /**
     * 更新时间
     */
    private Date updateTime;

    private String remark;
    @ApiModelProperty(value = "合同签署处理状态：0-未处理 1-已处理")
    private Integer contractStatus;
    @ApiModelProperty(value = "定金处理状态：0-未处理 1-已处理")
    private Integer downPaymentStatus;
    @ApiModelProperty(value = "尾款处理状态：0-未处理 1-已处理")
    private Integer finalPaymentStatus;
    @ApiModelProperty(value = "预计到货时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date estimateArrivalTime;
}
